Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

шифрование с помощью JavaScript (arbyte)
Author Message
arbyte
Участник форума



Joined: 09 Sep 2006
Posts: 40
Карма: 3
   поощрить/наказать

Location: Москва

PostPosted: Tue Mar 04, 2008 10:32 pm (написано за 2 минуты 59 секунд)
   Post subject: шифрование с помощью JavaScript
Reply with quote

Добрый вечер!
Возникла проблема, необходимо реализовать какой-либо достаточно стойкий алгоритм шифрования на JavaScript. Например, Triple DES.
Может ли кто-нибудь подсказать, не были ли уже подобные вещи реализованы именно на JavaScript'e, а то делать велосипед не хочется.
P.S. интересует именно обратимое шифрование, а не хеширование.
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Fri Mar 07, 2008 1:51 am (спустя 2 дня 3 часа 18 минут; написано за 18 секунд)
   Post subject:
Reply with quote

а зачем это нужно?
чем плох https?
Back to top
View user's profile Send private message
arbyte
Участник форума



Joined: 09 Sep 2006
Posts: 40
Карма: 3
   поощрить/наказать

Location: Москва

PostPosted: Fri Mar 07, 2008 8:33 am (спустя 6 часов 41 минуту; написано за 48 секунд)
   Post subject:
Reply with quote

https хорош, вполне достаточен для большинства случаев. Увы, он не избавляет от паранойи.
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Fri Mar 07, 2008 6:40 pm (спустя 10 часов 7 минут; написано за 42 секунды)
   Post subject:
Reply with quote

arbyte, для Triple DES нужен секретный ключ. как он будет передаваться в JS?
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Mar 07, 2008 9:37 pm (спустя 2 часа 57 минут; написано за 4 минуты 20 секунд)
   Post subject:
Reply with quote

dimagolov, дело в том, что секретный ключ не будет никуда передаваться в открытом виде.
Т.е. он будет вводиться на клиенте, передаваться в виде md5-хеша на сервер вместе с именем пользователя с помощью AJAX. По этой паре будут возвращаться шифрованные данные и расшифровываться с помощью секретного ключа, который сохраняем в какой-ть переменной JavaScript.
Еще раз подчеркну, я отлично понимаю, что вполне достаточно https. Но дело в том, что не все понимают что это такое, а даже малейшее сомнение в надежности может навредить одному проекту.
Back to top
arbyte
Участник форума



Joined: 09 Sep 2006
Posts: 40
Карма: 3
   поощрить/наказать

Location: Москва

PostPosted: Fri Mar 07, 2008 9:38 pm (спустя 1 минуту; написано за 23 секунды)
   Post subject:
Reply with quote

пред. сообщение мое, забыл авторизоваться
Back to top
View user's profile Send private message Send e-mail
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sat Mar 08, 2008 12:41 am (спустя 3 часа 3 минуты; написано за 4 минуты 8 секунд)
   Post subject:
Reply with quote

ну при таком раскладе получается нечто вроде шифрованмя с использованием пароля пользователя в качестве ключа. в принципе, ничего плохого в этом нету, кроме того, что еслм один раз перехватить ключ (а он будет как минимум в запоминалке паролей/автозаполнении полей броузера клиента), то потом сверяя md5 можно будет расшифровывать все, что зашифровано данным ключем.
но это все лирика, а конкретные реализации известны гуглу (www.google.com/search?q=Triple+DES+JavaScript&ie=utf-8&oe=utf-8)
Back to top
View user's profile Send private message
arbyte
Участник форума



Joined: 09 Sep 2006
Posts: 40
Карма: 3
   поощрить/наказать

Location: Москва

PostPosted: Sat Mar 08, 2008 11:54 am (спустя 11 часов 12 минут; написано за 2 минуты 51 секунду)
   Post subject:
Reply with quote

dimagolov, есть способы, чтобы пароль не сохранялся нигде, в том числе и в автозаполнении и запоминалке. А т.к. он будет передаваться только в зашифрованном виде (можно сначала передавать какой-ть параметр SALT, который будет каждый раз генерироваться заново - но это детали). За гугл - спасибо :))
Честно говоря, вероятно я очень стормозил при поиске, т.к. ничего существенного сам не нашел - буду прокачивать скил поиска :)
Back to top
View user's profile Send private message Send e-mail
An6rey
Участник форума



Joined: 30 Aug 2007
Posts: 69
Карма: 3
   поощрить/наказать


PostPosted: Sat Mar 08, 2008 12:44 pm (спустя 49 минут; написано за 6 минут 29 секунд)
   Post subject:
Reply with quote

Я думаю, открытий в области шифрования сейчас сделать сложно. Но вот стандартный подход
1) На клиенте генерится закрытый и открытый ключ
2) Открытый ключ передается на сервер
3) На сервере генерится симметричный ключ и предается зашифрованный на клиент
4) Дальше шифрование идет симметричным ключом

или

1) На сервере генерится окрытый и закрытый ключ
2) Открытый ключ передается клиенту
3) Клиент генерит симметричный ключ
4) Клиент шифрует симметричный ключ и передает серверу

Симметричное шифрование реализовано, например, в библиотеке jsolait.
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Sat Mar 08, 2008 5:28 pm (спустя 4 часа 44 минуты; написано за 7 минут 18 секунд)
   Post subject:
Reply with quote

An6rey, если я ничего не путаю, то алгоритмы с симметричным ключем требуют много больше ресурсов, чем традиционные с одним закрытым. а при реализации их на JS это критично.
но основная проблема в том, что Вы описали, что нужен кто-то независимый, кто бы проверял источник открытого ключа, чтобы не оказался man in the middle. в итоге имеем то, что уже реализовано в https, причем намного эфективнее.

да, еще один момент. есть же VPN, есть SSH-tunneling. и то и другое позволяет получать зашифрованный канал связи на сетевом уровне и автоматом снимает проблему защиты передачи данных на уровне приложений. если требования к безопастности столь серьезны, то я бы скорее смотрел в сторону таких низкоуровневых решений, чем на шифрование средствами интерпретатора
Back to top
View user's profile Send private message
An6rey
Участник форума



Joined: 30 Aug 2007
Posts: 69
Карма: 3
   поощрить/наказать


PostPosted: Sat Mar 08, 2008 7:11 pm (спустя 1 час 42 минуты; написано за 15 минут 29 секунд)
   Post subject:
Reply with quote

Несимметричные ключи как правило требуют больше ресурсов, т.к. реализуют работу с очень большими целыми числами.
Тот же https примерно так и поступает. То есть меняется несимметричными ключами и продолжает симметричными.
Реализовать защищенный от дискредитации протокол сложно, но возможно,если есть хороший математик (к счастью мне этим заниматься не приходится). А чистый https слишком много уж любителей сделать не таким секретным. Поэтому справедливо некоторые хотят иметь что-то помимо https.
Уже достаточным перимуществом "своих" систем защиты является то, что это еще нужно узнать что там происходит. Кроме того никто не возбраняет "свои" методы использовать поверх https.
В остальном согласен, низкоуровневые средства это, наверное. единственный надежный вариант. Но могут быть, наверное, какие-то мотивы использовать и js-шифрование.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML